package com.towin.org.esdemo.repository;

import com.towin.org.esdemo.es.entity.SystemHelpCenterDTO;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.data.elasticsearch.annotations.Query;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * es数据访问接口
 *
 * 继承 ElasticsearchRepository 接口，获得基本的 CRUD 操作能力
 * 可以自定义查询方法，方法名需要符合 Spring Data 的命名规范
 */
@Repository
public interface SystemHelpCenterRepository extends ElasticsearchRepository<SystemHelpCenterDTO, Integer> {

    /**
     * 按内容关键词模糊查询
     * 使用 ik_smart 分词器进行分词匹配
     *
     * @param keyword 关键词
     * @return 匹配的帮助文档列表
     */
    List<SystemHelpCenterDTO> findSystemHelpCenterDTOByContentIsLike(String keyword);



    /**
     * 按标题模糊查询
     * 使用 ik_smart 分词器进行分词匹配
     *
     * @param keyword 模糊查询的关键词
     * @return 匹配的帮助文档列表
     */
    List<SystemHelpCenterDTO> findSystemHelpCenterDTOByTitleIsLike(String keyword);

    /**
     * 使用 Elasticsearch 的全文搜索能力搜索内容
     * @param keyword 搜索关键词
     * @return 匹配的文档列表
     */
    List<SystemHelpCenterDTO> findByContentContaining(String keyword);

    /**
     * 使用 match 查询搜索内容
     * @param keyword 搜索关键词
     * @return 匹配的文档列表
     */
    @Query("{\"match\": {\"content\": \"?0\"}}")
    List<SystemHelpCenterDTO> findByContentMatch(String keyword);

    /**
     * 使用 match_phrase 查询，支持短语搜索
     * @param keyword 搜索关键词
     * @return 匹配的文档列表
     */
    @Query("{\"match_phrase\": {\"content\": \"?0\"}}")
    List<SystemHelpCenterDTO> findByContentPhrase(String keyword);
}
